home *** CD-ROM | disk | FTP | other *** search
/ Apple II Magazines (DO) / Nibble Volume 09, No. 09 (1988-09)(MicroSPARC)(Side B).zip / Nibble Volume 09, No. 09 (1988-09)(MicroSPARC)(Side B).do / SOUND.S < prev    next >
Text File  |  1996-12-24  |  2KB  |  86 lines

  1. *
  2. * SOUND Source Code
  3. * by Jim Richardson
  4. * Copyright(c) 1988
  5. * MicroSPARC, Inc.
  6. * Concord, MA 01742
  7. *
  8. PDIST     EQU $06
  9. PITCH1    EQU $07
  10. PITCH2    EQU $08
  11. LENGTH    EQU $09
  12. PITCHA    EQU $1A
  13. PITCHB    EQU $1B
  14. LENGTHA   EQU $1C
  15. PLUCK     EQU $1E
  16. *
  17. SPKR      EQU $C030
  18. *
  19.           ORG $300
  20. *******************************************************
  21. *Program is completely relocatable. Parameters never
  22. *move, are always at ADDRs $06-$09. If you relocate
  23. *program, you will need to recalculate entry points.
  24. *Zero page ADDRs $FA-$FF and STACK are available for
  25. *modifications. SOUND scrambles A,X,and Y registers.
  26. *******************************************************
  27. *************************
  28. *SETUP FOR DUET
  29. *************************
  30. DUET      LDA PITCH1     ;Places PITCH1 in PITCH2
  31.           STA PITCH2     ;and adds one to it so
  32.           INC PITCH2     ;ratio is always N:N+1
  33. ************************* 
  34. *SETUP FOR SOUND
  35. *************************
  36. SOUND     LDA LENGTH
  37.           STA LENGTHA
  38.           INC LENGTHA    ;INC needed because DEC
  39. *                             ;done before BNE in 74 & 87
  40.           LDA PITCH1
  41.           BEQ REST       ;If PITCH1=0 goto REST
  42.           STA PITCHA
  43.           LDA PITCH2 
  44.           ADC PDIST      ;Add PITCH2 + PDIST
  45.           STA PITCHB
  46.           CLC            ;In case of overflow
  47.           LDA #$00
  48.           STA PLUCK      ;FLAG. 0=no PLUCK,>0 PLUCK
  49.           TAX
  50. *************************
  51. *SOUND PRODUCING RTN
  52. *************************
  53. VOICE1    DEC PITCHA
  54.           BNE VOICE2
  55.           INC PLUCK      ;SPKR FLAG >0. SPKR plucks
  56.           LDA PITCH1
  57.           STA PITCHA     ;Restore original pitch
  58. VOICE2    DEC PITCHB
  59.           BNE TOGGLE
  60.           INC PLUCK      ;SPKR FLAG >0. SPKR plucks
  61.           LDA PITCH2
  62.           STA PITCHB     ;Restore original pitch
  63. TOGGLE    LDA PLUCK
  64.           BEQ WAIT       ;If PLUCK=0 goto WAIT
  65.           STA SPKR       ;Plucks SPKR twice
  66.           LDA #$00
  67.           STA PLUCK      ;Restore Pluck to zero
  68. WAIT      DEX
  69.           BNE VOICE1
  70.           DEC LENGTHA
  71.           BNE VOICE1
  72.           RTS
  73. *************************
  74. *REST ROUTINE
  75. *************************
  76. REST      LDX #$07       ;Waste aprox. same amount
  77. DELAYHI   DEX            ;of time as it takes 2
  78.           LDY #$DD       ;median pitches to go
  79. DELAYLO   DEY            ;thru Sound Producing
  80.           BNE DELAYLO    ;Rtn.
  81.           CPX #$01
  82.           BCS DELAYHI
  83.           DEC LENGTHA
  84.           BNE REST
  85.           RTS
  86.